<?php
/* ###############################################################################
 *
 * $Id: sqlite.php 20 2014-09-21 17:58:02Z expertsoftware.i@gmail.com $
 *
 * システム名
 *   PHP Web フレームワーク [Ponzu]
 *
 * 機能
 *   sqlite ライブラリ
 *
 * バージョン
 *   0.0.0_0
 *
 * ライセンス
 *   LGPL v2.0
 *
 * 履歴
 *   2007/07/01 K.Sonohara
 *     新規作成。
 *
 * ###############################################################################*/

/**
 * DB接続
 * @access public
 * @param dbc データベースコンフィグ
 * @param p 接続プール有効ならtrue
 * @return 接続変数
 */
function beginDB($dbc,$p=true) {
  $db = sqlite_open($dbc, 0666, $sqliteerror);

  return $db;
}

/**
 * DB終了
 * @access  public
 * @param db 接続変数
 */
function endDB($db) {
  if ($db) {
    try {
      sqlite_query($db, "rollback;", SQLITE_BOTH, $sqliteerror);
    } catch(Exception $e) {
    }

    sqlite_close($db);
  }
}

/**
 * DBロールバック
 * @access  public
 * @param db 接続変数
 * @param message エラーメッセージ格納配列
 */
function rollbackDB($db, $message) {
  queryDB("rollback;", $db, $message);
}

/**
 * DBコミット
 * @access  public
 * @param db 接続変数
 * @param message エラーメッセージ格納配列
 */
function commitDB($db, $message) {
  queryDB("commit;", $db, $message);
}

/**
 * DBトランザクション開始
 * @access  public
 * @param db 接続変数
 * @param message エラーメッセージ格納配列
 */
function sqlBeginDB($db, $message) {
  queryDB("begin;", $db, $message);
}

/**
 * SQL実行
 * @access  public
 * @param sql SQL分
 * @param db 接続変数
 * @param message エラーメッセージ格納配列
 */
function queryDB($sql, $db, $message) {
  if (count($message)) return null;

  $q = sqlite_query($db, $sql, SQLITE_BOTH, $sqliteerror);
  if (!$q) {
    $message[count($message)] = "データベースにエラーが発生しました。";
    return null;
  }

  return $q;
}

function versionDB() {
  return "SQLite3 Ver. " . SQLite3::version()[versionString];
}
?>
